package com.yanftch.stopcoding.ui;

import org.jetbrains.annotations.NotNull;

import javax.swing.*;
import java.awt.*;

public class RotatedTextPanel extends JPanel {
    private double panelWidth;
    private double panelHeight;

//    private String text = "第一个|第二个长度|第三个测试阶段的问题|第四个生成阶段的问题更多吗|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配|第五个时间是检验真理得我你他们的时间按照分配"; // 示例文本
    private String text = "";

    public RotatedTextPanel(LayoutManager layout, boolean isDoubleBuffered, String text) {
        super(layout, isDoubleBuffered);
        this.text = text;
    }

    public RotatedTextPanel(LayoutManager layout, String text) {
        super(layout);
        this.text = text;
    }

    public RotatedTextPanel(boolean isDoubleBuffered, String text) {
        super(isDoubleBuffered);
        this.text = text;
    }

    public RotatedTextPanel(String text) {
        this.text = text;
    }

    public RotatedTextPanel(double panelWidth, double panelHeight, @NotNull String text) {
        this.panelWidth = panelWidth;
        this.panelHeight = panelHeight;
        this.text = text;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        Font f = new Font("Arial", Font.PLAIN, 14);
        g2d.setFont(f);
        // 获取字体的高度
        FontMetrics fontMetrics = g2d.getFontMetrics(f);
        int fontHeight = fontMetrics.getHeight();

        // 分割字符串
        String[] parts = text.split("\\|");
        int maxWidth = 100;

//        for (int i = 0; i < parts.length; i++) {
//            String part = parts[i];
//            int textWidth = fontMetrics.stringWidth(part); // 计算文本宽度
//            if (textWidth >= maxWidth) {
//                maxWidth = textWidth;
//            }
//        }
        maxWidth = (int) panelHeight - 300;

        // 初始绘制位置
        int x = 10; // 初始X位置
        for (int i = 0; i < parts.length; i++) {
            String part = parts[i];
            int textWidth = fontMetrics.stringWidth(part); // 计算文本宽度
            // 保存当前的 Graphics 状态
            g2d.translate(x, maxWidth); // 设置Y轴固定在100
            if (i % 2 == 0) {
                // 旋转-90度
                g2d.rotate(Math.toRadians(-90));
                g2d.setColor(Color.RED);
                g2d.drawString(part, -0, 0);
            } else {
                // 旋转90度
                g2d.rotate(Math.toRadians(90));
                g2d.setColor(Color.GREEN);
                g2d.drawString(part, -textWidth, 0);
            }

            // 恢复 Graphics 状态
            g2d.rotate(Math.toRadians(i % 2 == 0 ? 90 : -90)); // 恢复角度
            g2d.translate(-x, -maxWidth); // 恢复位置
//            System.out.println("日志：maxWidth=" + maxWidth + ", fontHeight=" + fontHeight + ", part=" + part + ", textWidth=" + textWidth + ", 之前 x=" + x);
            if (i % 2 == 0) {
                x += fontHeight + 0;
            } else {
                x += fontHeight + 10;
            }
//            System.out.println("日志：maxWidth=" + maxWidth + ", fontHeight=" + fontHeight + ", part=" + part + ", textWidth=" + textWidth + ", 之后 x=" + x);
        }
    }
}
